﻿
#pragma once
#include <vtkm/exec/arg/Fetch.h>
#include <vtkm/exec/arg/ExecutionSignatureTagBase.h>
#include <vtkm/exec/arg/AspectTagDefault.h>

#include "libmesh/elem.h"

//using vtkm::exec::arg::Fetch;
//struct FetchTagMeshIn
//{
//};
//
//template<typename ExecObjectType>
//struct Fetch<FetchTagMeshIn, vtkm::exec::arg::AspectTagDefault, ExecObjectType>
//{
//    using ValueType = libMesh::Elem;
//    VTKM_SUPPRESS_EXEC_WARNINGS
//    template <typename ThreadIndicesType>
//    VTKM_EXEC
//    ValueType Load(const ThreadIndicesType& indices, const ExecObjectType& arrayPortal) const
//    {
//        return arrayPortal + indices.GetInputIndex();
//    }
//
//    template <typename ThreadIndicesType>
//    VTKM_EXEC void Store(const ThreadIndicesType&, ExecObjectType, const ValueType&) const
//    {
//        // Store is a no-op for this fetch.
//    }
//};